// public private 和 protected§
// TypeScript 可以使用三种访问修饰符（Access Modifiers），分别是 public、private 和 protected。
// public    修饰的属性或方法是公有的，可以在任何地方被访问到，默认所有的属性和方法都是 public 的
// private   修饰的属性或方法是私有的，不能在声明它的类的外部访问 (子类也无法继承和在内部访问)
// protected 修饰的属性或方法是受保护的，它和 private 类似，区别是它在子类中也是允许被访问的



// 
/* class Animal {
    // 只读  只能在创建时赋值  后面无法修改
    public readonly name: string;
    public age: number;
    public species: string = "animal";
    public constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    static msg = "你好";
    static isAni(arg) {
        return arg.constructor == Animal;
    }

    public say() {
        console.log(this.name, this.age);
    }
}

var tom = new Animal("Tom", 2); */
// tom.name = "kitty";


// 抽象类 

abstract class Animal {
    public name;
    public constructor(name) {
        this.name = name;
    }
    public abstract sayHi(): void;  // 定义的抽象方法必须在子类继承式 实现
}

// 首先，抽象类是不允许被实例化的：(只能被继承)
// 其次 抽象类 定义的抽象方法必须在子类继承式 实现

class Cat extends Animal {
    sayHi() {
        console.log("hi");

    }
}





export default 100;